/*
版权@hehung所有，转载请申明
email：1398660197@qq.com
*/
#ifndef __APP_ALARM_H__
#define __APP_ALARM_H__

#include <stdint.h>


/* 闹钟任务的运行周期 */
#define ALARM_RNU_CYCLE                (1000U)    /* 1s */

/* 闹钟数量 */
#define ALARM_NUM_MAX                  (10U)

/* 当中使能状态 */
#define ALARM_ENABLED                  (1U)
/* 星期一使能状态 */
#define ALARM_MONDAY_EN                (0x01U)
/* 星期二使能状态 */
#define ALARM_TUESDAY_EN               (0x02U)
/* 星期三使能状态 */
#define ALARM_WEDNESDAY_EN             (0x04U)
/* 星期四使能状态 */
#define ALARM_THURSDAY_EN              (0x08U)
/* 星期五使能状态 */
#define ALARM_FIRDAY_EN                (0x10U)
/* 星期六使能状态 */
#define ALARM_SATURDAY_EN              (0x20U)
/* 星期天使能状态 */
#define ALARM_SUNDAY_EN                (0x40U)

#define ALARM_WARNING_ON               (1U)
#define ALARM_WARNING_OFF              (0U)
#define ALARM_WARNING_HOLD_THD         (uint16_t)(5U*60U)    /* 5分钟 */ 

typedef struct 
{
	uint8_t alarm_h;    /* 小时 */
	uint8_t alarm_m;    /* 分钟 */
	uint8_t alarm_en;   /* 使能状态 */
	uint8_t alarm_wk_bit;    /* 星期使能位 bit 0~bit6 - 星期一~星期天 */ 
} e_AlarmType;

typedef struct 
{
	uint8_t alarm_active;    /* 闹钟激活标志 */
	uint8_t alarm_actived;   /* 当前闹钟已经激活过了 */
	uint16_t alarm_run_t;     /* 闹钟运行时间 */
} e_AlarmWarningType;


extern void Alarm_TaskInit(void);
extern e_AlarmType Alarm_GetAlarmTime(uint8_t num);
extern void Alarm_SetAlarmTime(uint8_t num, e_AlarmType time);
extern void Alarm_StopWarning(void);
extern uint8_t Alarm_GetalarmFlag(void);

#endif
